<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <div id="app">
        <p>num:{{num}}</p>
        <input type="button" value="+" @click="num=num+1">
        <input type="button" value="-" @click="num=num-1">
        <hr>
        <input type="button" value="+" @click="num++">
        <input type="button" value="-" @click="num--">
        <hr>
        <input type="button" value="+" @click="num+=1">
        <input type="button" value="-" @click="num-=1">
        <hr>
        <p>user:{{user}}</p>
        <input type="text" v-model="user.name"><br>
        <input type="text" v-model="user.age"><br>
        <input type="text" v-model="user.obj.a"><br>
        <input type="button" value="重置user" @click="resetUser()">
        <hr>
        <p>arr:{{arr}}</p>
        <input type="text" v-model="arr[1]">
        <hr>
        <p>obj:{{obj}}</p>
        <input type="text" v-model="obj.a">
        <input type="button" value="重置obj" @click="resetObj()">
    </div>
</body>
<script>
    new Vue({
        el:"#app",
        data:{
            num:10,
            user:{
                name:"clearlove",
                age:27,
                obj:{
                    a:11
                }
            },
            arr:[1,2,3,4,5],
            obj:{
                a:10,
                b:"bb"
            }
        },
        watch:{
            num(nv,ov){
                console.log(nv,ov);
            },
            // user(){
            //     console.log("user被改变");
            // },
            "user.name"(){
                console.log("user.name属性被改变");
            },
            user:{
                handler(){
                    console.log("user-object属性改变");
                },
                deep:true
            },
            arr:{
                handler(){
                    console.log("arr[1]的值发生改变");
                },
                deep:true
            },
            // obj(nv,ov){
            //     console.log("new-value",nv);
            //     console.log("old-value",ov);
            // }   
            obj:{
                handler(nv,ov){
                    console.log("new-value",nv);
                    console.log("old-value",ov);
                },
                deep:true
            }
        },
        methods:{
            resetUser(){
                this.user={
                    name:"iboy",
                    age:20,
                    obj:{
                        a:2
                    }
                }
            },
            resetObj(){
                this.obj={
                    a:"aa",
                    b:10
                }
            }
        }
    })
</script>
</html>